package collection;

import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**  对字符串集合进行排序  */
public class SortString {
    public static void main(String[] args) {
        List <String> list1= new ArrayList<>();
        list1.add("jack");
        list1.add("rose ");
        list1.add("tom");
        list1.add("jerry");
        list1.add("black");
        list1.add("kobe");
        System.out.println("list原始数据:"+list1);//输出原始数据

        //对英文字符串排序时会按照首字母的ASCII码进行排序
        //若首字母相同，则比较第二个字母的ASCII码进行排序，以此类推
        Collections.sort(list1);//默认就是自然排序（从小到大）升序
        System.out.println("list排序后的数据:"+list1); //升序AES   按照首字母的ASCII码进行排序
        List<String > list= new ArrayList<>();
        list.add("王克晶");
        list.add("传奇老师很帅 ");
        list.add("伟超老师");
        Collections.sort(list);//默认就是自然排序（从小到大）
        System.out.println("list排序后的数据:"+list);//中文也是按照字母的ASCII码进行排序
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                //compareTo()方法定义o1和o2的大小关系，返回值小于0表示o1小于o2，返回值大于0表示o1大于o2，返回值等于0表示o1等于o2 并且通过返回值表述大小关系
                //返回值实现的要求：.............不用纠结
                //1)如果返回值>0则表述的是o1>o2
                //2)如果返回值<0则表述的是o1<o2
                //3)如果返回值=0则表述的是o1=o2
                //结论 ：用前面的减去后面的----------升序
                //      用后面的减去前面的----------降序
                return o1.length()-o2.length();//升序
              //  return o2.length()-o1.length();//降序
                //return o1.compareTo(o2);//升序
                //return 0;
            }
        });
        //与上面一堆代码，效果完全相同
        Collections.sort(list, (o1,o2) ->{
                return o1.length()-o2.length();
            }
        );



    System.out.println("list排序后的数据:"+list);


      //  Collections.sort(list,new Aoo());
    }
}

//class Aoo implements Comparator<String > {
  //  @Override
    //public int compare(String o1, String o2) {
  //      return 0;
//
   // }
//}






